package com.yztstudy.Service;

import com.yztstudy.entity.Product;
import com.yztstudy.param.*;
import com.yztstudy.to.OrderToProduct;
import com.yztstudy.utils.R;

import java.util.List;

/**
 * 商品的业务逻辑层接口
 */

public interface ProductService{
    R promo(ProductPromoParam productPromoParam); // 查询类别的主键

    R hots(ProductHotParam productHotParam); // 多类别的热门商品查询

    R list(); // 查询全部的商品类别

    R byCategory(ProductIdsParam productIdsParam); // 指定商品类别的分页查询

    R detail(ProductIdParam productIdParam); // 查询详情

    R pictures(ProductIdParam productIdParam); // 商品的图片查询

    List<Product> allList(); // 搜索服务,获取全部商品数据,用于同步到ES服务

    R search(ProductSearchParam productSearchParam); // 搜索功能

    R productIds(ProductCollectParam productCollectParam); // 根据商品ID集合查询多个商品

    List<Product> cartList(ProductCollectParam productCollectParam); // 根据商品ID集合查询多个商品

    void subNumber(List<OrderToProduct> orderToProducts); // 监听扣减库存，增加销量

    Long adminCount(Integer categoryId); // 查询某个类别是否有商品

    R adminSave(ProductSaveParam productSaveParam); // 保存商品

    R adminUpdate(Product product); // 更新商品

    R adminRemove(Integer productId); // 删除商品
}
